import socketserver
# 1 新建一个类,继承BaseRequestHandler,并重写handle方法
class MyTCPHandler(socketserver.BaseRequestHandler):
    def handle(self):  # 处理客户端逻辑
        while True:
            try:
                self.data = self.request.recv(1024).strip()
                print("客户端连接", self.client_address)
                self.request.send(self.data)  # 发送数据
            except ConnectionResetError as e:
                print("客户端已断开")
                break   # 必须break, 因为一个客户端是一个新的实例
# 2 创建类的实例,传递处理类和ip
tcp_server = socketserver.ThreadingTCPServer(("localhost", 8080), MyTCPHandler)  # 多线程
# server  = socketserver.ForkingTCPServer((HOST, PORT), MyTCPHandler) #多进程 linux适用
# server = socketserver.TCPServer((HOST, PORT), MyTCPHandler) 单进程
# 3 处理请求
tcp_server.serve_forever()
